/******************************************************************************
** 公司名称：天津柯迪斯科技有限公司
** 版权信息：
** 文件名称： App_Protocol_BF_UART.h
** 模块名称： 八方串口协议处理模块
** 版 本 号： V1.0
** 作    者： 蒲磊
**
** 修改记录： 版本     修改人      时间         修改内容
**           V1.0    蒲磊      2022.5.23
******************************************************************************/
#ifndef __APP_PROTOCOL_BF_H_
#define __APP_PROTOCOL_BF_H_

/******************************************************************************
* 头文件
******************************************************************************/
#include "bsp.h"
/******************************************************************************
* 宏定义 ('#define')
******************************************************************************/
#define READ_ERROR          0x08
#define READ_CURRENT        0x0A
#define READ_SOC            0x11
#define READ_SPEED          0x20
#define WRITE_SPEEDLIMIT    0x1F
#define WRITE_PAS           0x0B
#define WRITE_LAMP          0x1A

/******************************************************************************
* 类型定义 ('typedef')
******************************************************************************/
typedef struct
{
    uint16_t 	Current;                /*电流*/
    int8_t      Soc;
    uint16_t 	Speed;
    uint8_t		ErrCode;
    uint16_t    Rpm;

} stRECEIVED_DATA;


typedef struct
{
    uint8_t		Lamp;                   /*大灯状态*/
    int8_t		Pas;                    /*档位,-1表示助推档*/
    uint8_t     Pas_Range;              /*档位范围*/
    uint16_t    Speed_Limit;            /*限速值，分辨率：0.1Km/h*/
    uint16_t    Wheel_Diameter;         /*轮径*10，英寸*/
} stSEND_DATA;


/******************************************************************************
* 全局变量声明
******************************************************************************/

/******************************************************************************
* 函数声明
******************************************************************************/
void vPROTOCOL_Get_OneFrame(uint8_t *pData,uint16_t Len);
void vPROTOCOL_Loop(void);

void vPROTOCOL_Set_Lamp(uint8_t State);
void vPROTOCOL_Set_Pas(int8_t Pas);
void vPROTOCOL_Set_Pas_Range(int8_t Range);
void vPROTOCOL_Set_Speed_Limit(uint16_t Speed);
void vPROTOCOL_Set_Wheel(uint16_t Wheel);
void vPROTOCOL_Set_Value_When_PowerOn(void);
void vPROTOCOL_Set_Value_When_ExitSetting(void);

void vPROTOCOL_Send_Run_Data(void);
void vPROTOCOL_Send_Config_Data(void);
void vPROTOCOL_Send_Config_Data_OneTime(void);

int8_t      cPROTOCOL_Get_Soc(void);
uint16_t    usPROTOCOL_Get_Current(void);
uint16_t    usPROTOCOL_Get_Speed(void);
uint8_t     ucPROTOCOL_Get_Errcode(void);

void vPROTOCOL_ResetCommunicationOverTime(void);
void vPROTOCOL_Send(void);


#endif
